
#include "QuickSort.h"
#include "string.h"

QuickSort::QuickSort() {
}

QuickSort::~QuickSort() {
}

bool QuickSort::comparar(Termino_Parseado* ter1, Termino_Parseado* ter2) {
	char* aux1 = ter1->termino;
	char* aux2 = ter2->termino;
	int res = strncmp(aux1,aux2,40);
	if (res >= 1) {
		return true;
	}
	else {
		if ( res == 0) {
			if (ter1->doc > ter2->doc) {
				return true;
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}
}


void QuickSort::sort(Termino_Parseado** array, int inicio, int cantidad) {
	int i = inicio;
	int j = cantidad;
	Termino_Parseado*  h;

	Termino_Parseado* x = array[(inicio+cantidad) / 2];
	bool salida = false;
	do {

		while (this->comparar(x, array[i])) {
			i++;
		}
		salida = false;
		while (this->comparar(array[j], x)){
			j--;
		}
		if(i <= j ) {
			h = array[i];
			array[i] = array[j];
			array[j] = h;
			i++;
			j--;
		}
	} while (i <= j);

	if (inicio < j) {
		this->sort(array, inicio, j);
	}
	if (i < cantidad) {
		this->sort(array,i,cantidad);

	}

}
